#include <iostream>
#include <type_traits>
using namespace std;
int main() {
  cout << boolalpha;
  cout << "const int " << is_const<const int>::value << "\n";    // true
  cout << "const int& " << is_const<const int &>::value << "\n"; // false
  cout << "const int* " << is_const<const int *>::value << "\n"; // false
  cout << "int *const " << is_const<int *const>::value << "\n";  // true
  cout << "remove reference const const int& "
       << is_const<remove_reference<const int &>>::value << "\n"; // false
  cout << "remove reference const const int& "
       << is_const<remove_reference_t<const int &>>::value << "\n";   // true
  cout << "int " << is_volatile<int>::value << "\n";                  // false
  cout << "volatile int " << is_volatile<volatile int>::value << "\n"; // true
}